﻿#define _CRT_SECURE_NO_WARNINGS 1
//描述
//输入两个升序排列的序列，将两个序列合并为一个有序序列并输出。
//
//数据范围： 1 \le n, m \le 1000 \1≤n, m≤1000  ， 序列中的值满足 0 \le val \le 30000 \0≤val≤30000
//输入描述：
//输入包含三行，
//
//第一行包含两个正整数n, m，用空格分隔。n表示第二行第一个升序序列中数字的个数，m表示第三行第二个升序序列中数字的个数。
//
//第二行包含n个整数，用空格分隔。
//
//第三行包含m个整数，用空格分隔。
//输出描述：
//输出为一行，输出长度为n + m的升序序列，即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
//示例1
//输入：
//5 6
//1 3 7 9 22
//2 8 10 17 33 44
//复制
//输出：
//1 2 3 7 8 9 10 17 22 33 44
//#include<stdio.h>
//int main()
//{
//    int arr[2000] = { 0 };
//    int i = 0, j = 0, n, m;
//    scanf("%d%d", &n, &m);
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    for (j = i; j < m + i; j++)
//    {
//        scanf("%d", &arr[j]);
//    }
//    for (i = 0; i < m + n; i++)
//    {
//        for (j = 0; j < m + n - i - 1; j++)
//        {
//            if (arr[j] > arr[j + 1])
//            {
//                int tmp = arr[j];
//                arr[j] = arr[j + 1];
//                arr[j + 1] = tmp;
//            }
//        }
//    }
//    for (i = 0; i < m + n; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}
//模拟实现strncat
//#include<stdio.h>
//char* my_strncat(char* dest, const char* src, size_t num)
//{
//	char* ret = dest;
//	while (*dest)
//	{
//		dest++;
//	}
//	while (*src && num--)
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = 0;
//}
//int main()
//{
//	char s1[20] = "abcdef";
//	char s2[] = "ghijk";
//	my_strncat(s1, s2, strlen(s2));
//	printf("%s", s1);
//	return 0;
//}
//模拟实现strncpy
//#include<stdio.h>
//char* my_strncpy(char* dest, char* src, size_t num)
//{
//	char* ret = src;
//	while (*src && num--)
//	{
//		*dest = *src;
//		src++;
//		dest++;
//	}
//	if (*src == 0)
//		*dest = 0;
//	return ret;
//}
////char* my_strncpy(char* dst, const char* src, size_t n)
////{
////	int i;
////	for (i = 0; src[i] && i < n; i++)
////	{
////		dst[i] = src[i];
////	}
////
////	if (i < n)
////	{
////		dst[i] = 0;
////	}
////	return dst;
////}
//int main()
//{
//	char s1[20] = "ikuldd";
//	char s2[] = "abcdef";
//	my_strncpy(s1, s2, 2);
//	printf("%s", s1);
//	return 0;
//}
////一个数组中只有两个数字是出现一次，其他所有数字都出现了两次。
////
//编写一个函数找出这两个只出现一次的数字。
//法一
//#include<stdio.h>
//void find(int arr[], int len, int* x, int* y)
//{
//    int i = 0, j=0,tmp=0,flag=0,k=1,count=0;
//    for (i = 0; i < len; i++)
//    {
//        for (j = 1; j < len; j++)
//        {
//            if (arr[0] == arr[j])
//            {
//                flag = 1;
//                break;
//            }
//
//        }
//        if (flag == 0)
//        {
//            if (count == 0)
//            {
//                *x = arr[0];
//                count++;
//                
//            }
//            else
//            {
//                *y = arr[0];
//                return;
//            }
//        }
//        
//            tmp = arr[0];
//            arr[0] = arr[k];
//            arr[k] = tmp;
//            k++;
//        
//        flag = 0;
//    }
//
//    
//}
//int main()
//{
//    int arr[] = { 1,2,2,3,3,4,4,5 };
//    int len = sizeof(arr) / sizeof(arr[0]);
//    int x = 0, y = 0;
//    find(arr, len, &x, &y);
//    printf("这两个数是>:%d %d", x, y);
//    return 0;
//}
